Custom Exception কি?
Custom Exception হচ্ছে একটি ব্যবহারকারী-সংজ্ঞায়িত এক্সেপশন যা আপনার অ্যাপ্লিকেশনে নির্দিষ্ট সমস্যাগুলোর জন্য তৈরি করা হয়। যখন Java এর ডিফল্ট এক্সেপশন ক্লাস যেমন IOException, SQLException, বা NullPointerException আপনার প্রয়োজন পূরণ না করে, তখন আপনি একটি কাস্টম এক্সেপশন তৈরি করতে পারেন যা আপনার অ্যাপ্লিকেশনের নির্দিষ্ট ত্রুটি পরিস্থিতি সমাধান করবে। কাস্টম এক্সেপশন তৈরি করার মাধ্যমে আপনি আপনার কোডে আরও পরিষ্কার ত্রুটি হ্যান্ডলিং এবং ভালো কনটেক্সট প্রদান করতে পারেন।
Java তে কাস্টম এক্সেপশন তৈরি করতে আপনাকে একটি নতুন ক্লাস তৈরি করতে হয় যা Exception বা RuntimeException ক্লাসকে ইনহেরিট করে।
Custom Exception তৈরি করার পদ্ধতি
- Custom Exception Class তৈরি করা: একটি নতুন ক্লাস তৈরি করুন যা
ExceptionঅথবাRuntimeExceptionএর বেস ক্লাস থেকে ইনহেরিট করবে। - কনস্ট্রাক্টর এবং মেসেজ প্রদান: কাস্টম এক্সেপশনে কনস্ট্রাক্টর যোগ করা হয় যাতে আপনি এক্সেপশনের সঙ্গে একটি নির্দিষ্ট মেসেজ পাস করতে পারেন।
Custom Exception উদাহরণ
ধরা যাক, আমরা একটি কাস্টম এক্সেপশন তৈরি করতে চাই যেটি আমাদের ওয়েব অ্যাপ্লিকেশনে নেগেটিভ ইনপুট ভ্যালু পাওয়ার সময় ব্যবহার হবে। আমরা "InvalidInputException" নামক কাস্টম এক্সেপশন তৈরি করব।
// Custom Exception class
public class InvalidInputException extends Exception {
// Constructor with custom error message
public InvalidInputException(String message) {
super(message);
}
// Optionally, you can provide a constructor with both message and cause
public InvalidInputException(String message, Throwable cause) {
super(message, cause);
}
}
এখানে:
InvalidInputException: এটি একটি কাস্টম এক্সেপশন ক্লাস যাExceptionথেকে ইনহেরিট করেছে।super(message): এর মাধ্যমে কাস্টম মেসেজকে প্যারেন্ট ক্লাস (Exception) এর কনস্ট্রাক্টরে পাস করা হয়।
Custom Exception হ্যান্ডলিং
একটি কাস্টম এক্সেপশন হ্যান্ডল করতে হলে আপনাকে try-catch ব্লক ব্যবহার করতে হবে, যেখানে আপনি সেই এক্সেপশনের ধরণ ক্যাচ করবেন এবং প্রাসঙ্গিকভাবে সেই ত্রুটি পরিচালনা করবেন।
Custom Exception হ্যান্ডলিং উদাহরণ
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
// Servlet class handling custom exception
public class InputValidationServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String input = request.getParameter("userInput");
try {
// Simulate an input validation
validateInput(input);
response.getWriter().write("Input is valid!");
} catch (InvalidInputException e) {
// Handle the custom exception
response.getWriter().write("Error: " + e.getMessage());
}
}
// Method to validate input
private void validateInput(String input) throws InvalidInputException {
if (input == null || input.isEmpty() || Integer.parseInt(input) < 0) {
// Throwing the custom exception with an error message
throw new InvalidInputException("Input cannot be negative or empty!");
}
}
}
এখানে:
validateInput(input): এই মেথডে ইউজারের ইনপুট ভ্যালু যাচাই করা হচ্ছে। যদি ইনপুট নেগেটিভ হয় বা শূন্য থাকে, তবে কাস্টম এক্সেপশনInvalidInputExceptionথ্রো করা হয়।catch (InvalidInputException e): কাস্টম এক্সেপশন ক্যাচ করার মাধ্যমে সেই এক্সেপশনকে হ্যান্ডল করা হচ্ছে এবং ত্রুটির বার্তা ইউজারকে প্রদর্শন করা হচ্ছে।
Web.xml Configuration (Servlet Configuration)
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>InputValidationServlet</servlet-name>
<servlet-class>com.example.InputValidationServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>InputValidationServlet</servlet-name>
<url-pattern>/validateInput</url-pattern>
</servlet-mapping>
</web-app>
এখানে, InputValidationServlet সার্ভলেট /validateInput পাথের মাধ্যমে অ্যাক্সেস করা যাবে।
Custom Exception এর প্রয়োজনীয়তা
- Specific Error Handling: কাস্টম এক্সেপশন ব্যবহার করে আপনি নির্দিষ্ট ত্রুটির জন্য পৃথক হ্যান্ডলিং করতে পারবেন। যেমন, ইনপুট ভ্যালিডেশন, ডাটাবেস ত্রুটি ইত্যাদি।
- Code Readability: কাস্টম এক্সেপশন কোডের পাঠযোগ্যতা বৃদ্ধি করে, কারণ আপনি ত্রুটির ধরন এবং কারণ স্পষ্টভাবে ব্যাখ্যা করতে পারেন।
- Reusable: একাধিক সার্ভলেট বা ক্লাসে এক্সেপশন হ্যান্ডলিংয়ের জন্য কাস্টম এক্সেপশন রিইউজেবল হতে পারে, যা কোড ডুপ্লিকেশন কমায়।
- Centralized Error Handling: আপনি কাস্টম এক্সেপশন ব্যবহার করে অ্যাপ্লিকেশনের সকল ত্রুটি একটি কেন্দ্রীভূত পদ্ধতিতে হ্যান্ডল করতে পারেন, যা বাগ ট্র্যাকিং এবং রক্ষণাবেক্ষণকে সহজ করে।
সারাংশ
Custom Exception তৈরি এবং হ্যান্ডলিং সার্ভলেটস এবং ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে একটি গুরুত্বপূর্ণ টুল। এটি ডেভেলপারদের অ্যাপ্লিকেশনের নির্দিষ্ট ত্রুটিগুলোর জন্য কাস্টম এক্সেপশন তৈরি করতে এবং সেই অনুযায়ী সেই এক্সেপশনগুলি কার্যকরভাবে হ্যান্ডল করতে সহায়তা করে। কাস্টম এক্সেপশন ব্যবহার করে আপনি কোডের পরিষ্কারতা বৃদ্ধি করতে পারেন এবং ত্রুটি ব্যবস্থাপনায় আরও বেশি নিয়ন্ত্রণ এবং নমনীয়তা পেতে পারেন।
Read more